
package com.rt.schedulebase.mapper;
import com.rt.schedulebase.dto.ExamApplyDto;
import com.rt.schedulebase.dto.ExamScheduleDto;
import com.rt.schedulebase.dto.ScheduleDetailDto;
import com.rt.schedulebase.dto.terminal.QueryScheduledApplyDto;
import com.rt.schedulebase.entity.ExamSchedule;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

public interface ExamScheduleMapper extends BaseMapper<ExamSchedule>
{
    List<ExamSchedule> getExamSchedule(ExamScheduleDto p0);

    List<ScheduleDetailDto> getScheduleDetailList(ScheduleDetailDto p0);

    /**
     * 获取预约详情列表（实单）
     * @param paramExamApplyDto
     * @return
     */
    List<ExamApplyDto> getScheduleDetailList2(ExamApplyDto paramExamApplyDto);

    List<ExamSchedule> getExamScheduleOther4Plan(ExamScheduleDto p0);

    List<ExamSchedule> getExamScheduleOther(ExamScheduleDto p0);

    List<ExamScheduleDto> getExamScheduleOtherApm(ExamScheduleDto p0);

    int updateExamSchedule(ExamScheduleDto p0);

    List<String> getScheduledQueueNames(ExamSchedule p0);

    int updateForQueueName(ExamScheduleDto p0);

    int getDateScheduleCount(ExamScheduleDto p0);

    /**
     * 获取预约表的“预约ID”及其预约信息
     * @param p0
     * @return
     */
    List<ExamApplyDto> getScheduleList(ExamScheduleDto p0);

    String getMaxScheduleTime(ExamSchedule p0);

    int editScheduleStatus(ExamApplyDto p0);

    boolean printCntPlusOne(String p0);

    /**
     * 查找申请单状态为锁定，且超过X分钟的申请单
     * @param p0
     * @return
     */
    List<ExamApplyDto> getExamScheduleForScheduleStatus(String p0);

    List<ExamApplyDto> getExamApplyForApplyStatus();

    int getSigninOvertimeCnt(ExamApplyDto p0);

    void updateSigninOvertimeCnt2Zero(ExamApplyDto p0);

    List<ExamApplyDto> getExamApplyForNoCharge(ExamApplyDto p0);

    List<ExamApplyDto> getExamApplyForNoSign();

    List<ExamApplyDto> getFreeSourceByEarlySign(ExamApplyDto p0);

    String getQueueNo(Map<String, String> p0);

    String getScheduleQueueNo(Map<String, String> p0);

    List<ExamScheduleDto> getQueueCount(ExamScheduleDto p0);

    List<ExamScheduleDto> checkRateCount(ExamScheduleDto p0);

    List<ExamScheduleDto> intervalDate(String p0);


    List<String> querySickApplyNoList(QueryScheduledApplyDto dto);

    ExamScheduleDto getApmMaxDateAndMinByApmCode(String apmCode);


        /**
     * 根据患者id和检查类别查询 患者拥有的未检测的申请单号列表
     * 
     * @param sickId
     * @param examClasss
     * @return
     */
    List<String> getSickNoScheduleApplyNos(@Param("sickId") String sickId,@Param("examClasss") List<String> examClasss);
}
